package com.zmn.oms.dubbo.interfaces.zmn.normal.order;

import com.zmn.common.dto.ResponseDTO;
import com.zmn.oms.dubbo.dto.zmn.order.*;
import com.zmn.oms.dubbo.dto.zmn.order.user.UserOrderPageDRO;
import com.zmn.oms.dubbo.dto.zmn.order.user.UserOrderQueryDIO;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 类描述：订单 remote
 *
 * @author liuying
 * @date 2018/11/07 15:09
 * @see ZsNormalOrderWorkRemoteService
 */
@Deprecated
public interface ZsNormalOrderRemoteService {

    /**
     * 返修单检查
     *
     * @param checkReworkOrderDIO
     * @return
     * @see ZsNormalOrderWorkRemoteService#checkReworkOrder(com.zmn.oms.dubbo.dto.zmn.order.CheckReworkOrderDIO)
     */
    @Deprecated
    ResponseDTO checkReworkOrder(CheckReworkOrderDIO checkReworkOrderDIO);

    /**
     * 获取订单信息
     * @see ZsNormalOrderWorkRemoteService#getOrderById(java.lang.Long, java.lang.Long)
     * @param orderId
     * @return
     */
    @Deprecated
    ResponseDTO<OrderDRO> getOrderById(Long orderId);


    /**
     * 通第三方订单id查询
     * @param outerId
     * @return
     * @see ZsNormalOrderWorkRemoteService#getOrderWorkByOuterId(java.lang.String)
     */
    @Deprecated
    com.zmn.common.dto2.ResponseDTO<OrderDRO> getOrderWorkByOuterId(@NotNull String outerId);

    /**
     * 获取订单优惠券优惠金额
     *
     * @param orderIdList 一次最多查询5000条
     * @return
     * @see ZsNormalOrderWorkRemoteService#getCouponDiscountAmountByOrderIdList(java.util.List)
     */
    @Deprecated
    ResponseDTO<Integer> getCouponDiscountAmountByOrderIdList(List<Long> orderIdList);

    /**
     * 通过保修卡获取
     *
     * @param warrantyCode
     * @return
     * @see ZsNormalOrderWorkRemoteService#getOrderByWarrantyCode(java.lang.String)
     */
    @Deprecated
    ResponseDTO<OrderDRO> getOrderByWarrantyCode(String warrantyCode);

    /**
     * 获取微信订单详情
     *
     * @param orderId
     * @return
     * @see ZsNormalOrderWorkRemoteService#getWeixinOrderDetailById(java.lang.Long, java.lang.Long)
     */
    @Deprecated
    ResponseDTO<WeixinOrderDetailDRO> getWeixinOrderDetailById(Long orderId);

    /**
     * 取消订单
     *
     * @param cancelOrderDIO
     * @return
     * @see ZsNormalOrderWorkRemoteService#cancelOrder(com.zmn.oms.dubbo.dto.zmn.order.CancelOrderDIO)
     */
    @Deprecated
    ResponseDTO cancelOrder(CancelOrderDIO cancelOrderDIO);

    /**
     * 修改订单
     *
     * @param updateOrderDIO
     * @return
     * @see ZsNormalOrderWorkRemoteService#updateOrder(com.zmn.oms.dubbo.dto.zmn.order.UpdateOrderDIO)
     */
    @Deprecated
    ResponseDTO<NewOrderDRO> updateOrder(UpdateOrderDIO updateOrderDIO);

    /**
     * 修改一口价订单为后付
     * @param orderId 订单Id
     * @return
     * @see ZsNormalOrderWorkRemoteService#updateFinalPriceOrderToAfterPay(java.lang.Long)
     */
    @Deprecated
    ResponseDTO<Boolean> updateFinalPriceOrderToAfterPay(Long orderId);

    /**
     * 新单
     *
     * @param newOrderDIO
     * @return
     * @see ZsNormalOrderWorkRemoteService#insertOrder(com.zmn.oms.dubbo.dto.zmn.order.NewOrderDIO)
     */
    @Deprecated
    ResponseDTO<NewOrderDRO> addOrder(NewOrderDIO newOrderDIO);

    /**
     * 查询用户的所有订单
     * @param userId
     * @return
     * @see ZsNormalOrderWorkRemoteService#getMyOrderListByUserId(java.lang.Long)
     */
    @Deprecated
    ResponseDTO<SimpleOrderDRO> getMyOrderListByUserId(Long userId);

    /**
     * 根据查询条件查询用户的所有订单
     * @param query
     * @return
     * @see ZsNormalOrderWorkRemoteService#listPageOrderByUserId(com.zmn.oms.dubbo.dto.zmn.order.user.UserOrderQueryDIO)
     */
    @Deprecated
    com.zmn.common.dto2.ResponseDTO<UserOrderPageDRO> listPageOrderByUserId(UserOrderQueryDIO query);

    /**
     * 根据产品ID 获取这个产品 指定月份的下单量，该方法仅查微信渠道的下单量。
     *      如果不提供月份（month），则默认查当月；
     * @param productId
     * @param month
     * @return
     * @see ZsNormalOrderWorkRemoteService#getOrderCountByProductId(java.lang.Integer, java.util.Date)
     */
    @Deprecated
    ResponseDTO<OrderCountDRO> getOrderCountByProductId(Integer productId, Date month);

    /**
     * 根据前台产品ID 获取这个前台产品 指定月份的下单量，该方法仅查微信渠道的下单量。
     *      如果不提供月份（month），则默认查当月；
     * @param showProductId 前台产品Id
     * @param month 月份
     * @return
     * @see ZsNormalOrderWorkRemoteService#getOrderCountByShowProductId(java.lang.Integer, java.util.Date)
     */
    @Deprecated
    ResponseDTO<OrderCountDRO> getOrderCountByShowProductId(Integer showProductId, Date month);
    /**
     * 根据前台产品ID 获取这个前台产品 指定月份的下单量，
     *      如果不提供月份（month），则默认查当月；
     * @param showProductId 前台产品Id
     * @param month 月份
     * @param shopId 店铺ID
     * @return
     * @see ZsNormalOrderWorkRemoteService#getOrderCountByShowProductIdAndShopId(java.lang.Integer, java.util.Date, java.lang.Integer)
     */
    @Deprecated
    ResponseDTO<OrderCountDRO> getOrderCountByShowProductIdAndShopId(Integer showProductId, Date month, Integer shopId);

    /**
     * 根据前台产品ID 获取这个前台产品 指定月份的下单量，
     *      如果不提供月份（month），则默认查当月；
     * @param orderCountShopDIO
     * @return
     * @see ZsNormalOrderWorkRemoteService#getOrderCountByShowProductIdAndShopId(com.zmn.oms.dubbo.dto.zmn.order.OrderCountShopDIO)
     */
    @Deprecated
    ResponseDTO<OrderCountShopDRO> getOrderCountByShowProductIdAndShopId(OrderCountShopDIO orderCountShopDIO);
}